package com.yy.wga.pay.service.client.request.alipay.dto;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

/**
 * 支付宝单笔转账请求参数
 *
 * @author guochao
 * @date 2020/4/17 18:26
 */
@Data
public class AliPayTransferContentDTO {
    /**
     * 商户端的唯一订单号
     */
    @JSONField(name="out_biz_no")
    private String outBizNo;
    /**
     * 订单总金额，单位为元，精确到小数点后两位
     */
    @JSONField(name="trans_amount")
    private String amount;
    /**
     * 业务产品码，收发现金红包固定为：STD_RED_PACKET；单笔无密转账到支付宝账户固定为：TRANS_ACCOUNT_NO_PWD；单笔无密转账到银行卡固定为：TRANS_BANKCARD_NO_PWD
     */
    @JSONField(name="product_code")
    private String productCode;
    /**
     * 业务场景，PERSONAL_COLLECTION：C2C现金红包-领红包；DIRECT_TRANSFER：B2C现金红包、单笔无密转账到支付宝/银行卡
     */
    @JSONField(name="biz_scene")
    private String bizScene;
    /**
     * 收款方信息
     */
    @JSONField(name="payee_info")
    private Participant participant;
    /**
     * 转账业务的标题，用于在支付宝用户的账单里显示，对应转账备注。
     */
    @JSONField(name="order_title")
    private String orderTitle;
    /**
     * 转账备注
     */
    @JSONField(name="remark")
    private String remark;
    /**
     * 付款商户信息
     */
    @JSONField(name="business_params")
    private BusinessParams businessParams;

    /**
     * 收款方信息
     */
    @Data
    public static class Participant {
        /**
         * 参与方的标识ID，比如支付宝用户UID
         */
        @JSONField(name="identity")
        private String identity;
        /**
         * 参与方的标识类型，目前支持如下枚举：1、ALIPAY_USER_ID 支付宝的会员ID 2、ALIPAY_LOGON_ID：支付宝登录号，支持邮箱和手机号格式
         */
        @JSONField(name="identity_type")
        private String identityType;
        /**
         * 收款方真实姓名
         */
        @JSONField(name="name")
        private String name;
    }

    /**
     * 付款商户信息
     */
    @Data
    public static class BusinessParams {
        /**
         * 付款方显示名称，可选，收款方在支付宝账单中可见
         */
        @JSONField(name="payer_show_name")
        private String payerShowName;
        /**
         * 二级商户企业名称
         */
        @JSONField(name="sub_merchant_name")
        private String subMerchantName;
        /**
         * 是二级商户MCC行业码
         */
        @JSONField(name="sub_merchant_mcc")
        private String subMerchantMCC;
    }
}
